<?php
	//länka in filer med funktioner som används
	require_once ('Model/LoginHandler.php');
	require_once ('Model/RegisterHandler.php');
	require_once ('common/Database.php');
	require_once ('Controller/LoginController.php');
	require_once ('Controller/RegisterController.php');
	// En function som testar ovanstånde funktioner
	// blir just nu fel då den inte loggar efter test tre vilket den måste för att det ska gå.
	/**
	 * 
	 */
	class Ctest
	{
	   
		public function Test()
		{
			$database = new Database('Login');
			$database->connect();
			$RegistreHandler= new RegisterHandler($database);
			$lh = new LoginHandler($database);
			$lh->DoLogout();
	
			if ($lh->IsLoggedIn() == true)
			{
				echo "1.IsLoggedIn tror att du är inloggad när du inte är det";
				return false;
			}
			
			$logInFalse = $lh->DoLogin("sadfasd","123434");
			if ($logInFalse == true)
			{
				echo "2.Du kan logga in med felaktiga uppgifter";
				return false;
			}
			if ($lh->IsLoggedIn() == true)
			{
				echo "2.2 IsLoggedIn tror att du är inloggad när du inte är det";
				return false;
			}
			
			$logInTrue = $lh ->DoLogin("johan","wibjer1");
			if ($logInTrue == false)
			{
				echo "3. Du kan inte logga in med rätt uppgifter";
				return false;
			}
			if ($lh->IsLoggedIn() == false)
			{
				echo "4 Du är inloggad men IsLoggedIn returnerar false";
				return false;
			}
			$lh->DoLogout();
			
			if ($lh->IsLoggedIn() == true)
			{
				echo "4.3 IsLoggedIn tror att du är inloggad när du inte är det";
				return false;
			}
			return true;
		}
		
		public function RegTest() {
			
			$database = new Database('Login');
			$database->connect();
			$RegistreHandler= new RegisterHandler($database);
			$RegistreHandler->DeleteUser('nisse');
			//Registrera användare
			if ($RegistreHandler->RegisterUser('nisse', 'riktiG1', 'riktiG1') != 4) {
				echo 'Test för RegisterUser misslyckades. Användaren registreras inte även att uppgifterna är korrekta.';
				return false;	
			}
			$RegistreHandler->DeleteUser('nisse');
			
			//Lösenorden skall ha en minimilängd på 6 tecken
			if ($RegistreHandler->RegisterUser('nisse', 'tre', 'tre') != 3) {
				echo 'Test för RegisterUser misslyckades. Användaren registreras även att lösenordet bara har 3 tecken.';
				$$RegistreHandler->DeleteUser('nisse');
				return false;		
			}
			
			//Båda lösenorden måste vara matchande
			if ($RegistreHandler->RegisterUser('nisse', 'password', 'wordpass') != 0) {
				echo 'Test för RegisterUser misslyckades. Båda lösenorden måste stämma överens.';
				$$RegistreHandler->DeleteUser('');
				return false;
			}
			
			//Nya användare får inte ha tomt användarnamn
			if ($RegistreHandler->RegisterUser('', 'riktig', 'riktig') != 1) {
				echo 'Test för RegisterUser misslyckades. Användaren får inte registrerars med tomt användarnamn.';
				$RegistreHandler->DeleteUser('');
				return false;		
			}
			
			//Man ska inte kunna skapa två användare med samma namn
			$RegistreHandler->RegisterUser('nisse', 'riktiG1', 'riktiG1');
			
			if ($RegistreHandler->RegisterUser('nisse', 'riktiG1', 'riktiG1') != 2) {
				echo 'Test för RegisterUser misslyckades. Det ska inte gå att skapa två användare med samma namn.';
				$RegistreHandler->DeleteUser('nisse');
				return false;		
			}
			$RegistreHandler->DeleteUser('nisse');
			
			//Man skall kunna plocka bort en användare ur databasen
			$RegistreHandler->RegisterUser('nisse', 'riktiG1', 'riktiG1');
			$RegistreHandler->RegisterUser('pelle', 'riktiG1', 'riktiG1');
			$RegistreHandler->DeleteUser('nisse');
			
			if ($RegistreHandler->RegisterUser('nisse', 'riktiG1', 'riktiG1') != 4) {
				echo 'Test för DeleteUser misslyckades. Användare plockas inte bort på rätt sätt';
				return false;
			}
			$RegistreHandler->DeleteUser('nisse');
			$RegistreHandler->DeleteUser('pelle');
			
			return true;
		}
	
		public function ManualTest()
		{
			
			$xhtml = '';
			$database = new Database('login');
			$database->Connect();
			
			$rc = new RegisterController();
			$rv = new RegisterView();
			
			//Test 1 för formuläret
			$xhtml .= '<h3>Utdata ska visa ett tomt registerformulär</h3>
						<br/>' . 
						$rv->DoRegisterBox() . 
						'<br/>';
	
			//Test 2 för formulöret
			$_POST['newUname'] = 'johansd';
			$_POST['newPword'] = 'testar';
			$_POST['samePword'] = 'testar1';
			$_POST['register'] = 'register';
			
			$xhtml .= '<h3>Utdata ska visa ett tomt registerformulär med ett meddelande om att alla fält måste vara ifyllda</h3>
						<br/>' . 
						$rc->DoControll() . 
						'<br/>';
			
			return $xhtml;
			
		echo $xhtml;
	  	
	}
	
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Testdriven utveckling</title>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  </head>
  <body class="">
  <p>
  	
  	<?php		
		//Test av login.php
		//Implementera själv både funktioner och test
		echo "<h2>Login-test</h2>";
		$login = new Ctest();
		if ($login->Test() == true) {
			echo "<p>Logintest ok</p>";
		} else {
			echo "<p>Logintest fungerar ej</p>";
		}
		if ($login->RegTest() == true) {
			echo "Regtest Funkar";
		} else {
			echo "Funkar inte";
		} 
		print_r($login->ManualTest());
	?>
  </p>
  </body>
</html>